/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package EntidadesController;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author thay
 */
public class Disciplina {

    private String coddisciplina = "";

    public boolean isRender() {
        return render;
    }

    public void setRender(boolean render) {
        this.render = render;
    }
    private String departamento_codigodep = "";
    private String descricao = "";
    private SQLException erro = new SQLException();
    static Connection conexao = null;
    static Statement estado = null;
    static ResultSet rs;
    private boolean render=false;
    private String msgerro;

    public Disciplina() {
        conexao = new Conexao().Acesso();
    }

    public String inserir() throws SQLException {

        String result_inserir = "failure";

        try {
            estado = conexao.createStatement();
            estado.execute("INSERT INTO Disciplina(coddisciplina,departamento_codigodep,descricao)" +
                    " VALUES ('" + coddisciplina + "','" + departamento_codigodep + "','" + descricao + "')");

            estado.close();

            result_inserir = "success";
            render = false;

        } catch (SQLException sqle) {
            this.erro = sqle;
            msgerro = erro.getLocalizedMessage();

            if (msgerro.contains("pk_matriculadisc")&&msgerro.contains("unicidade"))
            {msgerro = "Esse número de matrícula ja está cadastrado!";}
           // estado.execute("ROLLBACK");
            estado.close();
            result_inserir = "failure";
            render = true;
        }

        return result_inserir;
    }

    public String buscar() {

        String result_busca = "failure";

        try {
            estado = conexao.createStatement();
            rs = estado.executeQuery("SELECT * FROM Disciplina WHERE coddisciplina = '" + coddisciplina + "'");

            if (rs.next()) {
                coddisciplina = rs.getString(1);
                departamento_codigodep = rs.getString(2);
                descricao = rs.getString(3);
            }

            result_busca = "success";

            rs.close();
            estado.close();

        } catch (SQLException sqle) {
            this.erro = sqle;
            result_busca = "failure";
        }
        return result_busca;
    }

    public String editar() {

        String result_editar = "failure";

        try {
            estado = conexao.createStatement();
            estado.execute("BEGIN WORK");
            estado.execute("UPDATE Disciplina SET departamento_codigodep = '"
                    + departamento_codigodep + "' WHERE coddisciplina='" + coddisciplina + "'");

            estado.execute("UPADATE Disciplina SET descricao = '"
                    + descricao + "' WHERE coddisciplina ='" + coddisciplina + "'");

            estado.execute("COMMIT");
            estado.close();

            result_editar = "success";

        } catch (SQLException sqle) {
            this.erro = sqle;
            result_editar = "failure";
        }
        return result_editar;
    }

    public String deletar() throws SQLException {

        String result_delete = "failure";

        try {
            estado = conexao.createStatement();
            rs = estado.executeQuery("DELETE FROM Disciplina WHERE coddisciplina = '" + coddisciplina + "'");

            result_delete = "success";

            rs.close();
            estado.close();

        } catch (SQLException sqle) {
            this.erro = sqle;
            result_delete = "failure";
        }
        return result_delete;
    }

    public String getErro() {
        return erro.getMessage();
    }
    public String getMsgerro() {
        return msgerro;
    }

    public void setMsgerro(String msgerro) {
        this.msgerro = msgerro;
    }
    public String getCoddisciplina() {
        return coddisciplina;
    }

    public void setCoddisciplina(String coddisciplina) {
        this.coddisciplina = coddisciplina;
    }

    public String getDepartamento_codigodep() {
        return departamento_codigodep;
    }

    public void setDepartamento_codigodep(String departamento_codigodep) {
        this.departamento_codigodep = departamento_codigodep;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

        /*
     * Este metodo retorna uma lista de strings, necessaria para exibir
     * a combobox na interface com o usuario e nao tda a tabela.
     */
    public List<String> getCodigoDisciplina() {

    List<String> itens = new ArrayList<String>();

    try {
            estado = conexao.createStatement();

            rs = estado.executeQuery("SELECT * FROM Disciplina");

       while (rs.next() == true) {

           // primeira coluna da tabela: variavel 'coddisciplina';
            itens.add(rs.getString(1));
        }
            return itens;

        } catch (SQLException ex) {
            System.out.println("A tabela esta vazia.");
            Logger.getLogger(Curso.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }

    }

//    public static void main(String[] args) throws SQLException {
//    // TODO code application logic here
//    Disciplina sd = new Disciplina();
//    sd.setCoddisciplina("EXA808");
//    sd.setDepartamento_codigodep("DEXA");
//    sd.setDescricao("Calculo 10");
//    //    System.out.println("inserindo dados...");
//    //    System.out.println(sd.inserir());
//    //    System.out.println(sd.buscar());
//
//    for(int i = 0; i < sd.getCodigoDisciplina().size(); i++) {
//        System.out.println(sd.getCodigoDisciplina().get(i));
//    }
//    }
}